'''平面切分
题目描述
平面上有N条直线，其中第i条直线是y= Aix+ Bi。
请计算这些直线将平面分成了几个部分。
输入描述
第一行包含一个整数N。
以下N行，每行包含两个整数Ai,Bi。
其中，1≤N ≤1000,—105≤Ai,Bi≤105。
输出描述
—个整数代表答案。
输入输出样例
输入
3
1 1
2 2
3 3
输出
6'''

# 直线与平面数量之间的关系的核心逻辑是什么？？？
# 处理过程中需要考虑哪些特殊情况？？？


def xiangjiao(k1,b1,k2,b2):
  #判断两条线是否相交
  if k1!=k2: #判断斜率是否相等
    return True
  else:
    return False

def getpoint(k1,b1,k2,b2):
  #计算两条直线的交点
  #即k1*x+b1=k2*x+b2,解得x,
  #然后再把x代入y=k1*x+b1,解得y
  x=(b2-b1)/(k1-k2)
  y=(k2*b1-k1*b2)/(k2-k1)
  return (x,y) #以元组形式返回

n=int(input())
ls=[list(map(int,input().split())) for i in range(n)]
exist=[] #记录平面已有的直线
res=1 #记录平面的个数
for i in ls:
  point=[] #记录新添加和已有直线的交点
  if i in exist: #如果已有该直线，就跳过,不在判断
    continue
  for j in exist: #遍历已经存在的直线
    if xiangjiao(i[0],i[1],j[0],j[1]):
      #如果新添加的直线与已有的直线有交点，
      #计算它们的交点，并记录
      new=getpoint(i[0],i[1],j[0],j[1])
      if new not in point: #该交点原来没有，则记录
        point.append(new)
  res+=(len(point)+1)
  exist.append(i) #记录该直线
print(res)